<?php

namespace model;

require_once ('src/Model/UserCredentials.php');

class LoginModel {		
  	
	/**
	*  	$loginData[0] = 0 = Ej inloggad 
	*  	$loginData[0] = 1 = Inloggad 
	*  	$loginData[0] = 2 = Användarnamn saknas
	*  	$loginData[0] = 3 = Lösenord saknas
	*  	$loginData[0] = 4 = Felsktigt lösenord  (Använaren kommer att få texten-->Felaktigt användarnamn och/eller lösenord )
	*  	$loginData[0] = 5 = Felaktigt användarnamn och/eller lösenord 
	*   $loginData[0] = 7 = Felaktig information i Cookie
	*  	$loginData[0] = 8 = Utloggning utan utloggningstext
	* 	$loginData[0] = 9 = Du har nu loggats ut (efter att du varit inloggad)
	* 
	* 	$loginData[1] = Användarnamn = Admin
	*   $loginData[2] = Lösenord = Password
	* 
	*   $loginData[3] = 0 = Kom inte ihåg mitt lösenord:  hänvisar till min checkbox
	*   $loginData[3] = 1 = Kom ihåg mitt lösenord: hänvisar till min checkbox
	*   $loginData[4] = 0 = inte inloggad via cookie
	*   $loginData[4] = 1 = loggat in med cookie
	*/
	
 	/**
	 * @var array $loginData
	 */
	private $m_loginData = array ("0", "", "", "0", "0") ;
	/**
	 * @var string $m_sessionNameUsername
	 * @var string $m_sessionNamePassword
	 * @var string $m_sessionWebBrowser
	 * @var string $m_sessionHTTP_USER_AGENT
	 * @var string $m_sessionUserHasBeenLogedIn
	 * @var string $m_sessionUserJustLogedIn
	 */	
    private static $m_sessionNameUsername ="Session_Username";
    private static $m_sessionNamePassword ="Session_Password";
    private static $m_sessionWebBrowser = "Web_Browser";
    private static $m_sessionHTTP_USER_AGENT = "HTTP_USER_AGENT";
    private static $m_sessionUserHasBeenLogedIn = "userHasBeenLogedIn";
    private static $m_sessionUserJustLogedIn = "userJustLogedIn";
	
	/**
	 *@return 
	 */
	public function returnSessionUsername(){
		return self::$m_sessionNameUsername;	
    }
	
	/**
	 *@return 
	 */
    public function returnSessionPassword(){    	
        return self::$m_sessionNamePassword;
    }
	/**
	 *@return 
	 */
    public function returnSessionWebBrowser(){    	
        return self::$m_sessionWebBrowser;
    }
	/**
	 *@return 
	 */
    public function returnSessionHTTP_USER_AGENT(){    	
        return self::$m_sessionHTTP_USER_AGENT;
    }
	/**
	 *@return 
	 */
    public function returnSessionUserHasBeenLogedIn(){    	
        return self::$m_sessionUserHasBeenLogedIn;
    }
	/**
	 *@return 
	 */
    public function returnSessionUserJustLogedIn(){    	
        return self::$m_sessionUserJustLogedIn;
    }

	//skapar en construktor skapar ett objekt 
	public function __construct(){
		$this->userCredentials = new \model\UserCredentials();
	}
		
	//Här sätter vi rätt systemstatus och kontrollerar anändaruppgifterna
	// här tar vi emot array och ($loginStatus,$username,$password,$stayLoggedin,$usedCookie) fyller $userDataArray med innehållet.
	/**
	 * @param array $userDataArray
	 */
	
	// setState funktion kollar av(typ en validering)och sätter inloggnings data. 
	public function setState($userDataArray){
				
		$this->userCredentials->checkUserCredentials($userDataArray[1], $userDataArray[2]);
				
		$hasValidUserName = $this->userCredentials->hasValidUserName();
		$hasValidPassword = $this->userCredentials->hasValidPassword();
		
		$validUsername =  $this->userCredentials->returnValidUsername();
		$validPassword =  $this->userCredentials->returnValidPassword();
		
		//här sätts Användarnamn och läsenord i de positioner i arrayen	
		if ($hasValidUserName == true && $hasValidPassword == true){
						
			//om på position 0 i arrayen det är 1 då är man inloggad
			$userDataArray[0] = "1";	
			$_SESSION[self::$m_sessionNameUsername] = $validUsername;
            $_SESSION[self::$m_sessionNamePassword] = $validPassword;
            $_SESSION[self::$m_sessionWebBrowser] =  $_SERVER[self::$m_sessionHTTP_USER_AGENT];	
			
			// detta körs oavsett om if sattsen är sann eller falsk. 
       		 $_SESSION[self::$m_sessionUserHasBeenLogedIn] = "1";       // 1 = har man varit inloggad. 0 = man är inte inloggad
		
			//	Annars se i listan ovan vad de betyder.					
		} else if ($userDataArray[0]=="9" || $userDataArray[0]=="8" || $userDataArray[0]=="7"){
			
			} else if ($userDataArray[1]=="" ){
					
					$userDataArray [0] = "2";
					
			  } else if ($hasValidUserName == true && $userDataArray[2] ==""){						
					
					$userDataArray[0] = "3";
								
			  	} else if ($hasValidUserName == true && $hasValidPassword != true){
							
					$userDataArray[0] = "4";
								
			  			} else if ($hasValidUserName != true || $hasValidPassword != true){
							
						$userDataArray[0] = "5";			
			  			}
				// Här fyller jag min privata medlemsvariabel( array ) $loginData med innehållet från min $userDataArray
			$this->m_loginData = $userDataArray;
	}
	

	
	/**
	 * @return array $m_loginData
	 */
	
	public function getData(){   // när getData funktionen aropas från controllen retuneras då innehållet i arrayen loginData 			
		//  här retuneras loginData arrayen som som fylldes av innehållet från $userDataArray när vi körde setState funktionen.
		// retuneras till Controllen $userData tar emot den.		
		return $this->m_loginData;
	}
	

	/**
	 * @return boolean
	 */	
	public function isLogedIn() {

        if ($this->m_loginData[0] == "1"){

                return true;
        } else {
              return false;
            }
    }

	/**
	 * @return Boolean
	 */
	public function hasBeenLogedin(){   	// Den här funktionen kollar om man vart inloggad eller inte.
											// isset kollar om det är satt, finns den.
		if (isset($_SESSION[self::$m_sessionUserHasBeenLogedIn])) {
        	// om användaren har varit inloggad så retuneras true. alltså om det är satt en 1 ['userHasBeenLogedIn']== "1"
			if ($_SESSION[self::$m_sessionUserHasBeenLogedIn] == "1") {
            	//om man vart inloggad sätts den till en 1. vid omladdning av sidan vid utloggning sätts den till en 0.
				// i if satsen så sätts värdet till en 0,['userHasBeenLogedIn'] = "0" man har inte varit inloggad syns för användaren.
                $_SESSION[self::$m_sessionUserHasBeenLogedIn] = "0";
				
                return true;
            } else {
                    return false;
            	}

        } else {
              return false; // 2 olika if sattser
        	}

    }
	
	/**
	 * @return Boolean
	 */
	public function hasJustLogedin(){

		if (!isset($_SESSION[self::$m_sessionUserJustLogedIn])){
               $_SESSION[self::$m_sessionUserJustLogedIn] = "1";
		
                return true;
		} else {
              return false;
        }

    }	
		
}


